package org.colswe.testingProject.control;

import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Persistence;
import org.colswe.testingProject.dao.ApplicationDao;
import org.colswe.testingProject.entity.Application;

/**
 * Clase ApplicationControl para el manejo de Application.
 *
 * @author andres
 */
public class ApplicationControl {

    /**
     * Dao para el manejo de Application.
     */
    private ApplicationDao dao;

    /**
     * Constructor de Application Control.
     */
    public ApplicationControl() {
        dao = new ApplicationDao(Persistence.createEntityManagerFactory("TPPU"));
    }

    /**
     * Método para crear una Application.
     *
     * @param toCreate Application a crear.
     * @return Verdadero si fue correcto.
     */
    public boolean create(Application toCreate) {
        return dao.create(toCreate);
    }

    /**
     * Método para leer una Application.
     *
     * @param toRead Application a leer.
     * @return Application leída.
     */
    public Application read(Application toRead) {
        return dao.read(toRead);
    }

    /**
     * Método para hacer filtros de Application.
     *
     * @param filters Filtros para Application.
     * @return Lista con las Application filtradas.
     */
    public Collection<Application> readByFilters(ArrayList<String> filters) {
        return dao.readByFilters(filters);
    }

    /**
     * Leer todas las Application.
     *
     * @return Lista con todas las Application.
     */
    public Collection<Application> readAll() {
        return dao.readAll();
    }

    /**
     * Método para actualizar una Application.
     *
     * @param toUpdate Application a actualizar.
     * @return verdadero si fue correcto.
     */
    public boolean update(Application toUpdate) {
        return dao.update(toUpdate);
    }

    /**
     * Metodo para borrar una solicitud.
     *
     * @param toDelete Solicitud a borra.
     * @return Verdadero si es correcto.
     */
    public boolean delete(Application toDelete) {
        return dao.delete(toDelete);
    }
}
